﻿#pragma once

#include <string>
#include <vector>
#include <opencv2/opencv.hpp>

typedef struct tagDetectResult
{
	int class_id{ 0 };			// 目标ID
	std::string className{};	// 检测目标的名称
	cv::Rect box{};				// 目标boundbox
	cv::Point2d obbBox[4];		// obb检测输出框：4个角点

	cv::Scalar color{};			// 颜色:外部绘制

	float confidence{ 0.0 };	// 检测结果置信度
	float score{ 0.0 };
	float nms{ 0.0 };
}DetectResult;

using DetectResultList = std::vector<DetectResult>;

class InferResult
{
public:
	DetectResultList& getResults() { return results_; }
	DetectResult& getResult(int i) { return results_.at(i); }

	int getObjCount() { return results_.size(); }

	cv::Mat getSrcImage() { return srcImage_; }
	cv::Mat getResultImage() { return resultImage_; }
private:
	DetectResultList results_;
	cv::Mat srcImage_;			// 源图像
	cv::Mat resultImage_;		// 结果图像：绘制结果
};
